package com.tmt.fileservice;

import com.tmt.fileservice.exception.FileLoadException;
import com.tmt.fileservice.exception.FileValidateException;

import java.io.OutputStream;

/**
 * Created by ThreeManTeam on 2017/5/24.
 */
public interface IFileService  {

    /**
     * 获取文件存储调度器。
     * @return
     */
    IFileDispatcher getFileDispatcher();

    /**
     * 获取文件数据存储器器
     * @return
     */
    IFileStorage getFileStorage();

    /**
     * 将文件数据保存到指定路径。
     * @param filePath
     * @param resolver
     */
    void save(String filePath, IFileDataResolver resolver) throws FileValidateException, FileValidateException;

    /**
     * 将文件数据写入输出流中。
     * @param filePath
     * @param out
     */
    void load(String filePath, OutputStream out) throws FileLoadException;

    /**
     * 将文件数据保存到Url映射的路径上。
     * @param fileUrl
     * @param resolver
     */
    void saveByUrl(String fileUrl, IFileDataResolver resolver) throws FileValidateException;

    /**
     * 将Url映射的文件数据写入输出流中。
     * @param fileUrl
     * @param out
     */
    void loadByUrl(String fileUrl, OutputStream out) throws FileLoadException;

    /**
     * 删除指定路径的文件。
     * @param filePath
     */
    void deleteFile(String filePath);

    /**
     * 删除路径中除指定文件之外的所有其他文件。
     * @param filePath 要保留的文件
     */
    void deleteFileExclude(String filePath);

    /**
     * 获取文件的长度。
     * @param filePath
     */
    long getFileSize(String filePath);

}
